Pandas库(名字取自其基本数据结构Panel,DataFrame,Series的前几个字母)是一个非常强大的数据处理和可视化库,支持从外部导入数据、数据统计分析、可视化及数据导出。

Pandas的安装与导入

我们可以通过在命令行提示符cmd(对于Windows系统)或者终端Terminal(对于Mac系统)使用下述命令安装Matplotlib:

pip install pandas

如果已经是使用Anaconda作为编程集成环境,那电脑中已经装好该库了,无需再次安装。 一般我们在使用时会将其简写为pd

import pandas as pd

在绘图时我们往往也会结合Matplotlib库一起使用。

数据导入

可以通过pd.read_csv pd.read_excel 的方式导入外部的csv数据和excel数据,支持相对位置和绝对位置,比如我们引入一个外部的csv文件。

car = pd.read_csv('data/car-sales.csv')

data/car-sales.csv表示的是相对于现在所运行文件的相对位置。 导入的数据自动转换为DataFrame数据格式。

生成DataFrame

\begin{array}{rrrrrr} & \text { Make } & \text { Colour } & \text { Odometer (KM) } & \text { Doors } & \text { Price } \\ \hline \mathbf{0} & \text { Toyota } & \text { White } & 150043 & 4 & \$ 4,000.00 \\ \mathbf{1} & \text { Honda } & \text { Red } & 87899 & 4 & \$ 5,000.00 \\ \mathbf{2} & \text { Toyota } & \text { Blue } & 32549 & 3 & \$ 7,000.00 \\ \mathbf{3} & \text { BMW } & \text { Black } & 11179 & 5 & \$ 22,000.00 \\ \mathbf{4} & \text { Nissan } & \text { White } & 213095 & 4 & \$ 3,500.00 \\ \mathbf{5} & \text { Toyota } & \text { Green } & 99213 & 4 & \$ 4,500.00 \\ \mathbf{6} & \text { Honda } & \text { Blue } & 45698 & 4 & \$ 7,500.00 \\ \mathbf{7} & \text { Honda } & \text { Blue } & 54738 & 4 & \$ 7,000.00 \\ \mathbf{8} & \text { Toyota } & \text { White } & 60000 & 4 & \$ 6,250.00 \\ \mathbf{9} & \text { Nissan } & \text { White } & 31600 & 4 & \$ 9,700.00 \end{array}

可以通过字典生成DataFram,比如生成一个名字为'car'的DataFrame

make=['Toyota', 'Honda', 'Toyota', 'BMW', 'Nissan', 'Toyota', 'Honda', 'Honda', 'Toyota', 'Nissan'] # 汽车生产商
color = ['White', 'Red', 'Blue', 'Black', 'White', 'Green', 'Blue', 'Blue', 'White', 'White'] # 汽车颜色
odometer = [150043, 87899, 32549, 11179, 213095, 99213, 45698, 54738, 60000, 31600] # 里程
doors = [4, 4, 3, 5, 4, 4, 4, 4, 4, 4] # 车门数量
price = ['$4,000.00', '$5,000.00', '$7,000.00', '$22,000.00', '$3,500.00', '$4,500.00', '$7,500.00', '$7,000.00', '$6,250.00', '$9,700.00']
car = pd.DataFrame({'Make':make, 'Colour':color, 'Odometer (KM)':odometer, 'Doors':doors, 'Price':price})

这里呈现的是Jupyter notebook 中呈现的效果:

数据描述

Pandas可以很方便地对数据进行分析,使用describe方法:

car.describe()

可以看到两个指标的各种常用的统计量了。不过这里默认只对定量数据进行描述,如果想要对定性数据进行描述,可以设定include参数:

car.describe(include=['object', 'float', 'int'])

这里对定性定量数据都进行了描述,不过有的只有定性数据有的特点,定量数据那里显示的是NaN(not a number)即是空值,反之亦然:

数据索引

提取单列或多列数据

可以通过类似于字典索引的方式,直接在DataFrame后面加中括号的形式进行指定列的索引

car['Price'] # 提取Price这一列
car[['Make','Colour']] # 提取Make,Colour这两列

lociloc的使用方法

loc是对索引名和列名进行索引的,iloc是对索引位置和列名位置进行索引的,这两个方法都需要输入两个参数,前一个为行,后一个为列。举例来看,我想要对上述数据第二行(索引名为1,索引位置也为1),第三列(索引名为'Odometer (KM)',列索引位置为2)的数据87889这个数据进行提取,我可以使用下面等价的两种代码形式:

car.loc[1,'Odometer (KM)']

或者

car.loc[1,2]

如果我们要提取某一行或某一列,可以使用:来表示所有,比如我要提取第三列,就可以是:

car.loc[:,'Odometer (KM)']

或者

car.loc[:,2]

apply的用法

可以通过apply对某列数据施加某个函数,使得某列发生整体变化。比如上述数据中Price这一列并不是数值形式的值,我们现在希望将其美元符号$去掉,逗号','去掉,同时转换为浮点型float数据我们就可以利用apply方法:

def to_num(x):
  x_new = x.replace('','') # 去掉美元符号
  x_new = x_new.replace(',','') # 去掉逗号,
  return float(x_new) # 返回浮点数

接下来使用apply方法对Price这一列进行整体转换

car['Price'].apply(to_num)

即可。